/**
 * @file
 * @description
 */

/**
 * @method
 * @description 深拷贝
 * @param {Object} source  源数据（要拷贝的对象）
 */
export const deepClone=(source)=>{
   const dest=Array.isArray(source)?[]:{};//目标对象
   
   /**
    * 
    * @param {Object} dst 目标数据（要拷贝到的对象上） 
    * @param {Object} sour 源数据（要拷贝的对象） 
    */
   const deep=(dst,sour)=>{
      for(const key in sour){
        if(Object.hasOwnProperty.call(sour,key)){
            const item=sour[key];
            if(item instanceof RegExp){//判断正则表达式
                des[key]=new RegExp(item);
            }else if(item instanceof Date){
                des[key]=new Date(item)
            }
            if(item instanceof Object){
                deep(dst[key]=Array.isArray(item)?[]:{},item);
            }else{
                dst[key]=item
            }
        }
      }
   }
   deep(dest,source);
   return dest
}